local sys = require "sys"



 -- 统一联网函数
sys.taskInit(function()


    wlan.init()
    sys.wait(1000)

    -- 获取上次保存的配网信息, 如果存在就直接联网, 不需要配网了
    -- 注意, fskv保存的数据是掉电存储的, 刷脚本/刷固件也不会清除
    -- 如需完全清除配置信息, 可调用 fskv.clear() 全清
    if fskv.kv_get("wlan_ssid") then
        wlan.connect(fskv.kv_get("wlan_ssid"), fskv.kv_get("wlan_passwd"))
        log.info( "fskv有联网数据")
        log.info( "正在连接请稍等******")
        --可能连接不成功，如果连接超时了（要有一个定时器计时），就让定时器打开"start_smartconfig" 。
        -- sys.waitUntil("IP_READY",5000)--等待1分钟看是否连接失败
        sys.wait(5*1000)--五秒还没有连接到网络的话
        log.info( "当前联网状态：",wlan.ready())
        if wlan.ready() then

        else
            sys.publish("start_smartconfig")
        end

        -- if wlan.ready() == flase then--连接超时
        --     log.info( "连接超时从新开启smartconfig---------------------------")
        --     sys.publish("start_smartconfig")
        -- end

    else
        log.info( "fskv中没有联网数据")
        sys.publish("start_smartconfig")
    end

    while 1 do





        sys.wait(1000)
    end

end)
sys.subscribe("IP_READY", function(ip) -- 联网成功的订阅
    log.info("wlan", "ip ready", ip)


    sys.publish("net_ready")--可以开始阿里云联网


    -- 联网成功, 可以发起http, mqtt, 等请求了
end)





sys.taskInit(function()--smartconfig 函数

    sys.wait(1000)

    while 1 do

        sys.waitUntil("start_smartconfig")
        -- 启动配网, 默认是esptouch模式     wlan.smartconfig(wlan.AIRKISS) 是AIRKISS 模式
        wlan.smartconfig(wlan.AIRKISS)
        log.info( "打开esptouch模式 的smartconfig")

        local ret, ssid, passwd = sys.waitUntil("SC_RESULT", 3*60*1000) -- 等3分钟
        if ret == false then
            log.info("timeout stop smartconfig")
            wlan.smartconfig(wlan.STOP)
            -- sys.wait(3000) -- 再等3s重新配网, 或者直接reboot也行
        else
            -- 获取配网后, ssid和passwd会有值
            log.info("获取到的账号和密码 ", ssid, passwd)
            -- 获取IP成功, 将配网信息存入fskv, 做持久化存储
            log.info("fskv", "save ssid and passwd")
            fskv.kv_set("wlan_ssid", ssid)
            fskv.kv_set("wlan_passwd", passwd)

        end

        sys.wait(1000)
    end


end)






